﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Security.Cryptography;
namespace Hotel.NhanVien
{
    public partial class TaiKhoan_Tao : Form
    {
        private SqlConnection conn = new SqlConnection(

               "Server=localhost;DataBase=Hotel;Integrated Security=SSPI");
        private HotelDataSet ds = new HotelDataSet();
        private SqlDataAdapter da;
        private string tableName = "TaiKhoan";
        private string staffID;
        private string staffName;
        public TaiKhoan_Tao()
        {
            InitializeComponent();
        }
        public enum ValidationCode
        {
            LoginFailed = 1,
            LoginSucceeded = 2,
            ConnectionFailed = 3,
            UnspecifiedFailure = 4,
            LoginCreated = 5
        } 
        public static string MaHoaMD5(string text)
        {
            MD5CryptoServiceProvider _md5Hasher = new MD5CryptoServiceProvider();
            byte[] bs = Encoding.UTF8.GetBytes(text);
            bs = _md5Hasher.ComputeHash(bs);
            StringBuilder s = new StringBuilder();
            foreach (byte b in bs)
            {
                s.Append(b.ToString("x2"));
            }
            return s.ToString();
        }
        private void SearchStaff()
        {            
                da = new SqlDataAdapter("select MaNV,TenNV,SoDT,TenNhom,TenTaiKhoan from NhanVien where (TenTaiKhoan IS NULL and DaXoa=0)", conn);
                DataTable tb = new DataTable();
                da.Fill(tb);
                dtgvTaoTaiKhoan.DataSource = tb;            
        }
        private ValidationCode InsertID()
        {
                     
            string sql = "INSERT INTO TaiKhoan VALUES(@id, @Password,0)";
            //User name param
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlParameter paramUserName = new SqlParameter();
            paramUserName.ParameterName = "@id";
            paramUserName.Value = tboxTenTaiKhoan.Text;
            cmd.Parameters.Add(paramUserName);
            //Password param
            MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
            byte[] hashedBytes;
            UTF8Encoding encoder = new UTF8Encoding();
            hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(tboxMatKhau.Text));
            SqlParameter paramPwd;
            paramPwd = new SqlParameter("@Password", SqlDbType.Binary, 30);
            paramPwd.Value = hashedBytes;
            cmd.Parameters.Add(paramPwd);
            //Insert the record into the database 
            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                return ValidationCode.LoginCreated;
            }
            catch (Exception objEx)
            {
                MessageBox.Show(objEx.Message);
                return ValidationCode.ConnectionFailed;
            }
            finally
            {
                conn.Close();
            } 


        }
        private void TaiKhoan_Tao_Load(object sender, EventArgs e)
        {
            SearchStaff();
        }

        private void dtgvTaoTaiKhoan_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
           
        }
        private int checkPassword(string s1,string s2)
        {
            if (s2 == s1)
            {
                return 1;
            }
            else return 0;
        }
        private void btnXacNhan_Click(object sender, EventArgs e)
        {
            if (tboxMaNV.Text == "")
            {
                MessageBox.Show("Nhập mã nhân viên!");
            }
            else if(tboxTenNV.Text=="")
            {
                MessageBox.Show("Nhập tên nhân viên!");
            }
            else if(tboxTenTaiKhoan.Text=="")
            {    
                MessageBox.Show("Chưa nhập tên tài khoản!");                
               
            }
            else if(tboxTenTaiKhoan.TextLength <3)
            {
                MessageBox.Show("Tên tài khoản phải lớn hơn 3 ký tự!");
           
            }
            else if(tboxTenTaiKhoan.TextLength>20)
            {
                MessageBox.Show("Tên tài khoản không được quá 20 ký tự!");
            }
            else if (tboxMatKhau.Text=="")
            {
                MessageBox.Show("Chưa nhập mật khẩu!");
            }
            else if (tboxMatKhau.TextLength <6 )
            {
                MessageBox.Show("Mật khẩu phải lớn hơn 6 ký tự!");
            }
            else if (tboxMatKhau.TextLength >20)
            {
                MessageBox.Show("Mật khẩu không được quá 20 ký tự!");
            }
            else if (tboxXacNhanMK.Text == "")
            {
                MessageBox.Show("Chưa nhập mật khẩu xác nhận!");
            }
            else if (checkPassword(tboxMatKhau.Text,tboxXacNhanMK.Text) == 0)
            {
                MessageBox.Show("Mật khẩu xác nhận không đúng!");
            }
            else 
            {
                if (checkPassword(tboxMatKhau.Text, tboxXacNhanMK.Text) == 1)
                {
                    DialogResult dr=MessageBox.Show("Bạn có muốn tạo tài khoản này không?","Xác nhận",MessageBoxButtons.OKCancel);
                    if (dr == DialogResult.OK)
                    {
                        InsertID();
                        da = new SqlDataAdapter("UPDATE NhanVien SET NhanVien.TenTaiKhoan = '" + tboxTenTaiKhoan.Text + "' where (MaNV='" + staffID + "')", conn);
                        SqlCommandBuilder cmdBldr = new SqlCommandBuilder(da);
                        da.Fill(ds, tableName);
                        da.Update(ds, tableName);
                        tboxMaNV.Text = "";
                        tboxTenNV.Text = "";
                        tboxTenTaiKhoan.Text = "";
                        tboxMatKhau.Text = "";
                        tboxXacNhanMK.Text = "";
                        SearchStaff();
                    }
                    else if (dr == DialogResult.Cancel)
                    { 
                    
                    }
                                       
                }
            }
        }

        private void btnHuyBo_Click(object sender, EventArgs e)
        {
            tboxMaNV.Text = "";
            tboxTenNV.Text = "";
            tboxTenTaiKhoan.Text = "";
            tboxMatKhau.Text = "";
            tboxXacNhanMK.Text = "";
        }

        private void dtgvTaoTaiKhoan_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            staffID = tboxMaNV.Text = dtgvTaoTaiKhoan.CurrentRow.Cells["MaNV"].Value.ToString();
            staffName = tboxTenNV.Text = dtgvTaoTaiKhoan.CurrentRow.Cells["TenNV"].Value.ToString();
        }

    }
}
